/**
 * 响应拦截
 * @param {Object} http 
 */
module.exports = (vm) => {
	uni.$u.http.interceptors.response.use((response) => {
		/* 对响应成功做点什么 可使用async await 做异步操作*/
		// 关闭加载中
		uni.hideLoading()
		const data = response.data;
		// 自定义参数
		const custom = response.config?.custom
		if (data.code !== 0) {
			console.log('data', data)
			console.log('custom', custom)
			if (data.message === '用户被禁用') {
				return data
			}
			setTimeout(()=>{
				vm.$u.toast(data.message);
				return Promise.reject(data.message)
			},200)
			// 如果没有显式定义custom的toast参数为false的话，默认对报错进行toast弹出提示
		}
		return data;
	}, (response) => {
		uni.login({
			provider: 'weixin',
			success: function(resp) {
				// let code = resp.code;
				uni.setStorageSync('code', resp.code);
			}
		})
		/*  对响应错误做点什么 （statusCode !== 200）*/
		if (response.statusCode == 401) {
			//跳到登录授权页面
			const sinfo = uni.getSystemInfoSync();
			//企业微信
			if (sinfo.environment && sinfo.environment == 'wxwork') {
				wx.qy.login({
					success: function(res) {
						let params = {
							code: res.code
						}
						uni.$u.http.post(`/base/mobile/userInfo/qywx/login`, params)
							.then(res => {
								if (res.code == 0) {
									//由于这里逻辑特殊 后续登录会替换掉状态值 所以单独保存一份状态值来做判断
									uni.setStorageSync('userInfo', res.data);
									//绑定id
									uni.setStorageSync('thirdId', res.data.thirdId);
									uni.setStorageSync('bindType', 2)
									uni.$u.http.get(
										'/base/mobile/sysMenuInfo/getMobileMenuListByRole'
										).then(res => {
										if (res.code == 0) {
											uni.setStorageSync('menu', res.data);
										}
									}).catch(error => {
										uni.$u.toast(error)
									})
								} else if (res.code == 10030) {
									uni.navigateTo({
										url: '/pages/subPackagesD/expire/index'
									})
								} else if (res.code == 10012) {
									uni.navigateTo({
										url: '/pages/subPackagesD/noAuthority/index'
									})

								}
							}).catch(err => {
								uni.$u.toast(err)
							})
					}
				});
			} else {
				//跳到登录授权页面
				uni.setStorageSync('userInfo', '')
				vm.$u.toast("用户token失效，请重新授权");
				setTimeout(() => {
					uni.reLaunch({
						url: '/pages/subPackagesD/login/index'
					})
				}, 1500)
			}

		} else {
			vm.$u.toast("网络丢失");
			// 关闭加载中
			uni.hideLoading()
			return Promise.reject(response)
		}
	})
}
